iT邦幫忙

2024 iThome 鐵人賽

1
佛心分享-刷題不只是刷題

刷經典 LeetCode 題目系列 第 55

經典LeetCode 202. Happy Number

  • 分享至 

  • xImage
  •  

這題是 202. Happy Number,我們需要判斷給定的數是否為「快樂數 (Happy Number)」。

題目:
一個「快樂數」是這樣定義的:對於一個正整數,重複將數字替換為它每個位置上的數字的平方和,並最終會得到 1。如果在此過程中進入一個迴圈而無法到達 1,則不是快樂數。

範例:

輸入: 19
輸出: true
解釋: 
1² + 9² = 82
8² + 2² = 68
6² + 8² = 100
1² + 0² + 0² = 1

解題思路

實作:

#include <unordered_set>
using namespace std;

class Solution {
public:
    bool isHappy(int n) {
        unordered_set<int> seen;

        while (n != 1 && seen.find(n) == seen.end()) {
            seen.insert(n);
            n = getNext(n);
        }

        return n == 1;
    }

private:
    int getNext(int n) {
        int sum = 0;
        while (n > 0) {
            int digit = n % 10;
            sum += digit * digit;
            n /= 10;
        }
        return sum;
    }
};

參考:
#202. Happy Number


上一篇
經典LeetCode 66. Plus One
下一篇
經典LeetCode 234. Palindrome Linked List
系列文
刷經典 LeetCode 題目69
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言